package py.progweb.sgc.gui.client.dialog;

import java.util.List;

import py.progweb.sgc.gui.client.widget.DescCampo;
import py.progweb.sgc.gui.client.widget.TablaFiltro;
import py.progweb.sgc.gui.client.widget.ToolbarListado;
import py.progweb.sgc.gui.shared.dialogmodel.DataRecord;
import py.progweb.sgc.gui.shared.dialogmodel.*;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class ListadoClientes extends ListadoBase {

	public ListadoClientes() {
		super("Listado de Clientes");

		setWidth(500);
		setHeight(400);

		ToolbarListado toolbar = new ToolbarListado(this);

		this.addItem(toolbar);

		cargarDatos();
	}

	@Override
	public void reset() {
		tabla.clearCriteria();
		cargarDatos();
	}

	@Override
	public void nuevo() {
		DialogFactory.showDialog(this, DialogFactory.DLG_FORMULARIO_CLIENTES);
	}

	@Override
	public void modificar() {
		List<DataRecord> items = tabla.getFilasSeleccionadas();

		if (items.size() != 1) {
			Window.alert("Debe seleccionar una sola fila para modificarla");
			return;
		}

		FormularioClientes form = (FormularioClientes) DialogFactory
				.showDialog(this, DialogFactory.DLG_FORMULARIO_CLIENTES);
		form.setData(items.get(0));
	}

	public void cargarDatos() {
		service.getClientesListadoModel(new AsyncCallback<ClientesModel>() {

			@Override
			public void onSuccess(ClientesModel result) {
				if (tabla != null)
					ListadoClientes.this.removeItem(tabla);

				tabla = new TablaFiltro(result.getRecords(), new DescCampo(
						"codClientePk", "Codigo"), new DescCampo("nombre",
						"Nombre"), new DescCampo("apellido", "Apellido"),
						new DescCampo("direccion", "Direccion"), new DescCampo(
								"telefono", "Telefono"), new DescCampo(
								"cedula", "Cedula"));
				ListadoClientes.this.addItem(tabla);
				tabla.setHeight(400);
			}

			@Override
			public void onFailure(Throwable caught) {
				manejarError(caught);
			}
		});
	}
}
